package com.cskaoyan.charstream.buffer;

import java.io.*;

/*
       同在字节流中引入缓冲流的原因相同
       a.出于效率的考虑，在字符流中，我们同样引入缓冲流
       b.但是缓冲字符流中，定义了父类Reader，Writer没有的方法

     1. 构造方法
        BufferedReader(Reader in)
          创建一个使用默认大小输入缓冲区的缓冲字符输入流。

        BufferedWriter(Writer out)
          创建一个使用默认大小输出缓冲区的缓冲字符输出流。


     2. 缓冲字符流中自己定义的方法
        BufferedReader
            String readLine()
              读取一个文本行。
              返回值:
              包含该行内容的字符串，不包含任何行终止符，如果已到达流末尾，则返回 null


        BufferedWriter
          void newLine()
              写入一个行分隔符。
              行分隔符字符串由系统属性 line.separator 定义，并且不一定是单个新行 ('\n') 符。


        按行复制文本内容

 */
public class Demo1 {

    public static void main(String[] args) throws IOException {
        // BufferedReader(Reader in)
        BufferedReader br =
                new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));


        //  BufferedWriter(Writer out)
        BufferedWriter bw =
                new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c.txt")));


        // 按行复制文本内容
        String lineStr;
        while ((lineStr = br.readLine()) != null) {
            // 写一行
            bw.write(lineStr);
            // 在流中写入一个操作系统相关的换行符
            bw.newLine();
        }

        // 关闭流
        br.close();
        bw.close();

    }
}
